/*************************************************************************
 *                                                                       *
 * This file is part of the DogosFrame distribution.  For full copyright *
 * information, see COPYRIGHT and COPYING.LESSER.                        *
 *                                                                       *
 * Author:           sqbang                                              *
 * Email:            sqbang@ustc.edu                                     *
 *                                                                       *
 *************************************************************************/

namespace DOGOS
{

inline float
IEEE::get_signaling_float_NaN()
{
    return MathUtilities<float>::get_signaling_NaN();
}


inline double
IEEE::get_signaling_NaN()
{
    return MathUtilities<double>::get_signaling_NaN();
}


inline Complex
IEEE::get_signaling_complex_NaN()
{
    return MathUtilities<Complex>::get_signaling_NaN();
}


inline void
IEEE::set_NaN(
    float& f)
{
    f = MathUtilities<float>::get_signaling_NaN();
}


inline void
IEEE::set_NaN(
    double& d)
{
    d = MathUtilities<double>::get_signaling_NaN();
}


inline void
IEEE::set_NaN(
    Complex& dc)
{
    dc = MathUtilities<Complex>::get_signaling_NaN();
}


inline void
IEEE::initialize_vector_to_signaling_NaN(
    std::vector<float>& vector)
{
    MathUtilities<float>::set_vector_to_signaling_NaN(vector);
}


inline void
IEEE::initialize_vector_to_signaling_NaN(
    std::vector<double>& vector)
{
    MathUtilities<double>::set_vector_to_signaling_NaN(vector);
}


inline void
IEEE::initialize_vector_to_signaling_NaN(
    std::vector<Complex>& vector)
{
    MathUtilities<Complex>::set_vector_to_signaling_NaN(vector);
}


inline void
IEEE::initialize_array_to_signaling_NaN(
    float* array,
    int n)
{
    MathUtilities<float>::set_array_to_signaling_NaN(array, n);
}


inline void
IEEE::initialize_array_to_signaling_NaN(
    double* array,
    int n)
{
    MathUtilities<double>::set_array_to_signaling_NaN(array, n);
}


inline void
IEEE::initialize_array_to_signaling_NaN(
    Complex* array,
    int n)
{
    MathUtilities<Complex>::set_array_to_signaling_NaN(array, n);
}


inline bool
IEEE::is_NaN(
    const float& f)
{
    return MathUtilities<float>::is_NaN(f);
}


inline bool
IEEE::is_NaN(
    const double& d)
{
    return MathUtilities<double>::is_NaN(d);
}


inline bool
IEEE::is_NaN(
    const Complex& dc)
{
    return MathUtilities<Complex>::is_NaN(dc);
}

}
